﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace sy5_7
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Text = "旋转艺术图"; // 设置窗体标题
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            pictureBox1.Refresh();

            // 获取PictureBox1的画布
            Graphics g = pictureBox1.CreateGraphics();
            // 抗锯齿，让图形更平滑
            g.SmoothingMode = SmoothingMode.AntiAlias;

            // 1. 将坐标系平移到PictureBox1的中心
            int centerX = pictureBox1.ClientSize.Width / 2;
            int centerY = pictureBox1.ClientSize.Height / 2;
            g.TranslateTransform(centerX, centerY);

            // 2. 随机数对象（生成随机颜色）
            Random ran = new Random();

            // 3. 循环旋转绘制（每次旋转5度，共72次，360/5=72）
            for (int i = 0; i < 72; i++)
            {
                // 生成随机颜色（ARGB，Alpha=255不透明）
                Color randomColor = Color.FromArgb(255, ran.Next(256), ran.Next(256), ran.Next(256));
                Pen p = new Pen(randomColor);

                // 设置画笔为点线样式（DashStyle.Dot）
                p.DashStyle = DashStyle.Dot;

                // 绘制线段：从(0,0)到(90,0)
                g.DrawLine(p, 0, 0, 90, 0);

                // 旋转坐标系5度
                g.RotateTransform(5);

                // 释放画笔资源
                p.Dispose();
            }

            // 重置坐标系
            g.ResetTransform();
            g.Dispose();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            pictureBox2.Refresh();

            // 获取PictureBox2的画布
            Graphics g = pictureBox2.CreateGraphics();
            g.SmoothingMode = SmoothingMode.AntiAlias;

            // 1. 将坐标系平移到PictureBox2的中心
            int centerX = pictureBox2.ClientSize.Width / 2;
            int centerY = pictureBox2.ClientSize.Height / 2;
            g.TranslateTransform(centerX, centerY);

            // 2. 定义三角形的3个顶点坐标（实验给定：(0,0)、(65,0)、(90,40)）
            Point[] trianglePoints = new Point[] {
                new Point(0, 0),
                new Point(65, 0),
                new Point(90, 40)
            };

            // 3. 循环旋转绘制（每次旋转45度，共8次，360/45=8）
            for (int i = 0; i < 8; i++)
            {
                // 定义画刷：根据循环次数奇偶性，选择网格刷或无填充
                Brush brush = null;
                if (i % 2 == 0)
                {
                    // 偶数次：用网格刷填充（样式DottedGrid）
                    brush = new HatchBrush(HatchStyle.DottedGrid, Color.Black, Color.Red);
                }
                else
                {
                    // 奇数次：无填充（用透明刷）
                    brush = new SolidBrush(Color.Transparent);
                }

                // 绘制三角形（填充+边框）
                g.FillPolygon(brush, trianglePoints);
                g.DrawPolygon(Pens.Black, trianglePoints);

                // 旋转坐标系45度
                g.RotateTransform(45);

                // 释放画刷资源
                brush.Dispose();
            }

            // 重置坐标系
            g.ResetTransform();
            g.Dispose();
        }
    }
}

